The instantiation of entity objects is similar to the instantiation of normal entities. There are two possibilities: direct and indirect instantiation.

The indirect instantiation first declares and instantiates a component which can be seen as something like a virtual instance. This virtual instance becomes a real one by binding the component to an entity/architecture pair. The binding can be done explicitly in a configuration or implicitly by default rules.

The example on the right illustrates this binding. In the configuration CONF the component E is bound to the entity/architecture pair E(A) from Chapter 6.1.4. This explicit binding can be omitted because the component also would be bound to the entity E by default rules because their names and effective interface lists are identical.

Note: Inherited concurrent component instantiations have to be configured again, also if this was already done for the parent architecture because configurations are not inherited.


entity E_Struct is
   port(A: in Bit; B: out Bit);
end E_Struct;

architecture Structure of E_Struct is
 component E
   port(Clk: in Bit; Output: out Bit);
 end component;
begin
   I1: E
        port map(Clk => A; Output => B);
end Structure;

configuration CONF of E_Struct is
 for Structure
   for all: E use entity Work.E(A)
      port map(Clk => Clk; Output => Output);
   end for;
 end for;
end CONF;